## 列表概述 ##
# 列表————有序的 数据所构成的 排列————列表中，可以存放 不同类型 的数据

# 访问列表中的元素————列表中，每一个元素都有 唯一标号————通过标号索引元素
# 0 1 2 3 4 ……
# …… -3 -2 -1

name_list = ['TOM', 'Lily', 'ROSE']
print(name_list)

print(name_list[1])
print(name_list[0])
# error: print(name_list[3])  # list index out of range
print("======================")

##获取一个元素##
# 创建列表a
a = [2, 3, 4, 5, 6]
a.append("混入了一个字符串")

print(a[0])  # 获取第一个元素
# 获取最后一个元素的三个方法：
print(a[5])
print(a[-1])
print(a[len(a) - 1])
print("======================")

##获取多个连续的元素##
# 从第一个元素开始，连取三个元素
print(a[:3])  # 输出索引为[0,3)的元素
print(a[1:3])  # 输出索引为[1,3)的元素
print(a[1:])  # 输出索引为1及之后的所有元素
print("======================")

## 关于列表切片的细节 切片默认情况为 [start=0 : stop=len(list)-1 : step=1]
lst = [10, 20, 30, 40, 50, 60, 70, 80]

print('原列表', id(lst))
lst2 = lst[1:6:1]
print('切的片段:', id(lst2)) # 不再是同一个列表

print(lst[1:6])  # 默认步长为1
print(lst[1:6:])

# start=1,stop=6,step=2
print(lst[1:6:2])

# stop=6,step=2,start采用默认
print(lst[:6:2])

# start=1，step=2，stop采用默认
print(lst[1::2])

print('------------ step步长为负数的情况-倒序 ---------------')

print('原列表:', lst)
print(lst[::-1])

# start=7,stop省略 step=-1
print(lst[7::-1])

# start=6,stop=0,step=-2
print(lst[6:0:-2])
